const sass = require('gulp-sass')(require('node-sass'));
const {
  task,
  src,
  series,
  dest
} = require('gulp');
const fs = require('fs');
const path = require('path'), buildTarget = './';
task('complie-stylesheet', function (done) {
  try {
    const sassFiles = '**pages/**/*.scss';
    //调用文件遍历方法
    src(sassFiles)
      .pipe(sass({
        sync: true
      }).on('error', sass.logError))
      // .pipe(fs.writeFileSync(buildTarget + 'index.wxss'))
      .pipe(dest(buildTarget))
  } catch (error) {
    console.error(error);
  } finally {
    done();
    return
  }
})

/**
 * 文件遍历方法
 * @param filePath 需要遍历的文件路径
 */
function fileDisplay(filePath, done) {
  //根据文件路径读取文件，返回文件列表
  fs.readdir(filePath, function (err, files) {
    if (err) {
      console.warn(err, "读取文件夹错误！")
    } else {
      //遍历读取到的文件列表
      files.forEach(function (filename, i) {
        //获取当前文件的绝对路径
        var filedir = path.join(filePath, filename);
        //根据文件路径获取文件信息，返回一个fs.Stats对象
        fs.stat(filedir, function (eror, stats) {
          if (eror) {
            console.warn('获取文件stats失败');
          } else {
            var isFile = stats.isFile(); //是文件
            var isDir = stats.isDirectory(); //是文件夹
            if (isFile && filedir.endsWith('.css')) {
              const baseName = path.basename(filedir, '.css');
              fs.rename(filedir, `${filePath}\\${baseName}.wxss`, function () {});
            }
            if (isDir) {
              fileDisplay(filedir); //递归，如果是文件夹，就继续遍历该文件夹下面的文件
            }
          }
        })
        if (i >= files.length - 1) {
         
          done && done();
        }
      });
    }
  });
}
/**
 * 更改.css扩展名称为wxss
 */
task('rename', function (done) {

  const dir = path.join(__dirname, '/');
  setTimeout(()=>{
    fileDisplay(dir, done);
  }, 2000)
  return
})

task('default', series( 'complie-stylesheet', 'rename' ));